#include <iostream>
#include <string>
#include <archive.h>
#include <archive_entry.h>

using namespace std;

int main(int argc, char* argv[]) {
  if (argc < 1) {
    cerr << "не указано имя файла" << endl;
    return -1;
  }

  archive *a = archive_read_new();
  archive_read_support_format_all(a);
  archive_read_support_compression_all(a);

  int r = archive_read_open_file(a, argv[1], 10240);
  if (r) {
    cerr << "не удалось открыть архив " << argv[1] << endl;
    cerr << "ошибка " << archive_error_string(a) << endl;
    return -1;
  }

  while (1) {
    archive_entry *header = NULL;
    r = archive_read_next_header(a, &header);
    if (ARCHIVE_EOF == r) break;
    if (ARCHIVE_OK != r) {
      cerr << "Ошибка: " << archive_error_string(a) << endl;
      if (r < ARCHIVE_WARN) 
        return -1;
    }

    cout << "file " << archive_entry_pathname(header) << endl;
    
  }
  cout << "finish" << endl;

  archive_read_close(a);

}
